package bancosys.tec.services.implementor.descriptor;

import java.lang.reflect.Method;
import java.util.List;

import jmine.tec.di.scope.TypedScope;
import jmine.tec.services.api.ServiceExecutionException;

/**
 * 
 */
public interface ServiceValidator {

    /**
     * Valida estados do servico
     * 
     * @param target Object
     * @param properties {@link TypedScope}
     * @return {@link List} de {@link String}
     */
    List<String> validate(Object target, TypedScope properties);

    /**
     * Valida
     * 
     * @param target o alvo
     * @param scope o escopo
     * @throws ServiceExecutionException e
     */
    void validateThrowException(Object target, TypedScope scope) throws ServiceExecutionException;

    /**
     * Devolve os metodos de validacao
     * 
     * @return the selected
     */
    List<Method> getValidationMethods();
}
